package com.yqg.manage.mapper;

import com.yqg.manage.entity.Unit;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 单位 Mapper 接口
 * </p>
 *
 * @author zxf
 * @since 2025-09-16
 */
public interface UnitMapper extends BaseMapper<Unit> {

    @MapKey("id")
    List<Map<String, Object>> getAllUnitDocumentNumber();

    /**
     * 删除前判断是否有用户使用
     *
     * @param unitId 单位id
     * @return 使用的条数
     */
    Integer deleteBeforeVerify(@Param("unitId") Long unitId);

    /**
     * 删除单位
     *
     * @param unitId 单位ID
     */
    void deleteUnit(Integer unitId);

    /**
     * 副主任查询自己负责的单位信息和管委会的单位信息
     *
     * @param userId 用户ID
     * @return 单位集合
     */
    List<Unit> deputyDirectorFindAll(@Param("userId") Long userId);


    /**
     * 副主任分页查询自己负责的单位
     */
    List<Unit> deputyDirectorFindPage(@Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize,
                                      @Param("search") String search, @Param("userId") Long userId);
    Integer deputyDirectorFindPageCount(@Param("search") String search, @Param("userId") Long userId);

    /**
     * 查询过滤掉管委会的单位
     * @param userId 副主任ID，不存在表示查所有，存在表示查副主任负责的单位
     */
    List<Unit> filterAfterAllUnit(@Param("userId") Long userId);
}
